package br.com.foxinline.servico;

import br.com.foxinline.utilitario.Mensagem;
import br.com.foxinline.modelo.TipoSelo;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.Query;

/**
 *
 * @author cadomeireles
 */
@Stateless
public class TipoSeloServico extends ServicoGenerico<TipoSelo> {
    
    public TipoSeloServico() {
        super(TipoSelo.class);
    }

    @Override
    public TipoSelo pesquisar(Long entidadeId) {
        return super.pesquisar(entidadeId);
    }

    @Override
    public void atualizar(TipoSelo entidade) {
        super.atualizar(entidade);
    }

    @Override
    public void deletar(TipoSelo entidade) {
        entidade.setStatus(false);
        super.atualizar(entidade);
    }

    public List<TipoSelo> pesquisar(TipoSelo tipoSeloPesquisar) {
        String sql = "select tipoSelo from TipoSelo tipoSelo where tipoSelo.status = true";
        
        if (tipoSeloPesquisar.getNome() != null && !tipoSeloPesquisar.getNome().isEmpty()) {
            sql += " and lower(tipoSelo.nome) like '%" + tipoSeloPesquisar.getNome() + "%'";
        }

        if (tipoSeloPesquisar.getDescricao() != null && !tipoSeloPesquisar.getDescricao().isEmpty()) {
            sql += " and lower(tipoSelo.descricao) like '%" + tipoSeloPesquisar.getDescricao() + "%'";
        }

        Query query = getEntityManager().createQuery(sql);        
        return query.getResultList();
    }    
    
    public List<TipoSelo> autocompletar(String query){
        return buscarPeloNome(query);
    }

    public List<TipoSelo> buscarPeloNome(String query){
        List<TipoSelo> tiposSelo = getEntityManager().createQuery("select tipoSelo from " + TipoSelo.class.getSimpleName() + " tipoSelo where lower(tipoSelo.nome) like '%" + query.toLowerCase().trim() + "%'").getResultList();
        return tiposSelo;
    }
    
}
